
/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#include "sync_module.h"

using namespace std;

SyncModule::SyncModule(Context &context, const string &module_name) : Module(context, module_name), sockfd(0) {
	// 初始化其他成员变量
	Logger::info("😄 " + Module::module_name + "  constructed ...");
}

bool SyncModule::Init() {
	Logger::info("✈️  " + Module::module_name + " initializing ...");
	return true;
}

void SyncModule::OnProcess(int intervalSec) {
	running = true;
	thread_sync.reset(new thread(&SyncModule::sync_process_handler, this, intervalSec));
}

void SyncModule::sync_process_handler(const int intervalSec) const {
	int count = 0;
	while (running) {
		if (count > 4) break;
		Logger::info("🕙 Run sync process...");
		this_thread::sleep_for(chrono::seconds(intervalSec));
		count++;
	}
	cout << "Task completed, Press Enter to continue..." << endl;
}

SyncModule::~SyncModule() {
	running = false;
	if (thread_sync && thread_sync->joinable()) {
		thread_sync->join();
	}
	thread_sync.reset();
	Logger::info("💔 " + module_name + " destructed ...");
}
